//package com.inter.insideinterservice.newservice;
//
//import com.inter.entity.common.DeviceRealTimeInformation;
//import com.inter.entity.newpojo.TurntoInterfaceUtils;
//import com.inter.entity.newpojo.request.RequestBody.QueryDeviceRealTimeRequestBody;
//import com.inter.entity.newpojo.request.RequestBody.QueryOrderRequestBody;
//import com.inter.entity.newpojo.request.RequestHeader;
//import com.inter.entity.newpojo.request.subRequest.QueryDeviceRealTimeRequest;
//import com.inter.entity.newpojo.request.subRequest.QueryOrderRequest;
//import com.inter.entity.newpojo.response.subResponse.QueryDeviceRealTimeResponse;
//import com.inter.entity.newpojo.Constant;
//import com.inter.entity.newpojo.response.subResponse.QueryOrderResponse;
//import com.inter.entity.newpojo.response.subResponse.common.PackageOrder;
//import com.inter.utils.HttpClientTool;
//import com.inter.utils.JaxbUtil;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
///**
// * 查询单一设备实时信息
// * 接入方可以通过调用该接口，查询某个设备信息，包括设备的基本信息、设备当前订购的套餐信息等
// * queryDeviceRealTime:普通的客户在使用 ：类似 Travis和 TCL
// * <p>
// * queryAllOrder:使用的客户暂时有大阳
// *
// * @author lm
// * @date 2018/12/29
// */
//public class TurnToQueryDeviceRealTimeService {
//    private static Logger logger = Logger.getLogger(TurnToQueryDeviceRealTimeService.class);
//
//    /***
//     * 请求所有套餐是为了算出剩余时间
//     * 现在专用于类似 Travis和 TCL
//     *
//     * @param deviceId
//     * @param secret
//     * @param partnerCode
//     * @return
//     */
//    public DeviceRealTimeInformation queryDeviceRealTime(String deviceId, String secret, String partnerCode) {
//
//        try {
//            QueryDeviceRealTimeRequestBody body = new QueryDeviceRealTimeRequestBody();
//            body.setDeviceId(deviceId);
//
//            QueryDeviceRealTimeRequest request = new QueryDeviceRealTimeRequest();
//            TurntoInterfaceUtils utils = new TurntoInterfaceUtils();
//
//            //拼装头信息
//            RequestHeader header = utils.getRequestHeader(Constant.cmd_queryDevice, partnerCode);
//            request.setHeader(header);
//            request.setBody(body);
//            String sign = utils.getSign(header, body, body.getClass(), secret);
//            //logger.info("签名是：" + sign);
//            request.setSign(sign);
//
//            // 将参数转换成XML格式
//            String sRequest = new JaxbUtil(QueryDeviceRealTimeRequest.class).toXml(request, "utf-8");
//            //logger.info("请求内容：" + sRequest);
//            // 发送post请求，并接收返回结果
//            String result = HttpClientTool.sendHttpPost(Constant.BASE_URL, sRequest);
//            //logger.info("返回结果：" + result);
//
//            QueryDeviceRealTimeResponse responseObj = new JaxbUtil(QueryDeviceRealTimeResponse.class).fromXml(result, "utf-8");
//            String retCode = responseObj.getHeader().getResultCode();
//            String resultInfo = responseObj.getHeader().getResultInfo();
//
//            if (true == Constant.RET_CODE_0000.equalsIgnoreCase(retCode)) {
//
//                deviceId = responseObj.getBody().getDeviceId();
//                String otaFlag = responseObj.getBody().getOtaFlag();
//                String bipFlag = responseObj.getBody().getBipFlag();
//                String multiImsiFlag = responseObj.getBody().getMultiImsiFlag();
//                String lifecycle = responseObj.getBody().getLifecycle();
//                String lifecycleStartTime = responseObj.getBody().getLifecycleStartTime();
//                String lifecycleEndTime = responseObj.getBody().getLifecycleEndTime();
//                String lifecycleSlientPeriod = responseObj.getBody().getLifecycleSlientPeriod();
//                String lifecycleShutdownPeriod = responseObj.getBody().getLifecycleShutdownPeriod();
//
//                String orderCode = responseObj.getBody().getPackageOrder().getOrderCode();
//                String packageName = responseObj.getBody().getPackageOrder().getPackageName();
//                String packageCode = responseObj.getBody().getPackageOrder().getPackageCode();
//                String packageType = responseObj.getBody().getPackageOrder().getPackageType();
//                String buyType = responseObj.getBody().getPackageOrder().getBuyType();
//                String orderPeriod = responseObj.getBody().getPackageOrder().getOrderPeriod();
//                String flow = responseObj.getBody().getPackageOrder().getFlow();
//                String usedFlow = responseObj.getBody().getPackageOrder().getUsedFlow();
//                String flowUseRate = responseObj.getBody().getPackageOrder().getFlowUseRate();
//                String orderUsedFlow = responseObj.getBody().getPackageOrder().getOrderUsedFlow();
//                String orderDate = responseObj.getBody().getPackageOrder().getOrderDate();
//                String activeDate = responseObj.getBody().getPackageOrder().getActiveDate();
//                String expireDate = responseObj.getBody().getPackageOrder().getExpireDate();
//                String isOrderRefuelingPackage = responseObj.getBody().getPackageOrder().getIsOrderRefuelingPackage();
//
//                if (isOrderRefuelingPackage.equals("1") && isOrderRefuelingPackage != null) {
//
//                    String refOrderId = responseObj.getBody().getPackageOrder().getRefuelingPackage().getRefOrderId();
//                    String refpackageStatus = responseObj.getBody().getPackageOrder().getRefuelingPackage().getRefpackageStatus();
//                    String refPackageFlow = responseObj.getBody().getPackageOrder().getRefuelingPackage().getRefPackageFlow();
//                    String refpackageOrderDate = responseObj.getBody().getPackageOrder().getRefuelingPackage().getRefpackageOrderDate();
//
//                    DeviceRealTimeInformation information = new DeviceRealTimeInformation();
//                    information.setRetCode(retCode);
//                    information.setResultInfo(resultInfo);
//                    information.setDeviceId(deviceId);
//                    information.setOtaFlag(otaFlag);
//                    information.setBipFlag(bipFlag);
//                    information.setMultiImsiFlag(multiImsiFlag);
//                    information.setLifecycle(lifecycle);
//                    information.setLifecycleStartTime(lifecycleStartTime);
//                    information.setLifecycleEndTime(lifecycleEndTime);
//                    information.setLifecycleSlientPeriod(lifecycleSlientPeriod);
//                    information.setLifecycleShutdownPeriod(lifecycleShutdownPeriod);
//                    information.setOrderCode(orderCode);
//                    information.setPackageName(packageName);
//                    information.setPackageCode(packageCode);
//                    information.setPackageType(packageType);
//                    information.setBuyType(buyType);
//                    information.setOrderPeriod(orderPeriod);
//                    information.setFlow(flow);
//                    information.setUsedFlow(usedFlow);
//                    information.setFlowUseRate(flowUseRate);
//                    information.setOrderUsedFlow(orderUsedFlow);
//                    information.setOrderDate(orderDate);
//                    information.setActiveDate(activeDate);
//                    information.setExpireDate(expireDate);
//                    information.setIsOrderRefuelingPackage(isOrderRefuelingPackage);
//                    information.setRefOrderId(refOrderId);
//                    information.setRefpackageStatus(refpackageStatus);
//                    information.setRefPackageFlow(refPackageFlow);
//                    information.setRefpackageOrderDate(refpackageOrderDate);
//                    return information;
//
//                } else {
//                    DeviceRealTimeInformation information = new DeviceRealTimeInformation();
//                    information.setRetCode(retCode);
//                    information.setResultInfo(resultInfo);
//                    information.setDeviceId(deviceId);
//                    information.setOtaFlag(otaFlag);
//                    information.setBipFlag(bipFlag);
//                    information.setMultiImsiFlag(multiImsiFlag);
//                    information.setLifecycle(lifecycle);
//                    information.setLifecycleStartTime(lifecycleStartTime);
//                    information.setLifecycleEndTime(lifecycleEndTime);
//                    information.setLifecycleSlientPeriod(lifecycleSlientPeriod);
//                    information.setLifecycleShutdownPeriod(lifecycleShutdownPeriod);
//                    information.setOrderCode(orderCode);
//                    information.setPackageName(packageName);
//                    information.setPackageCode(packageCode);
//                    information.setPackageType(packageType);
//                    information.setBuyType(buyType);
//                    information.setOrderPeriod(orderPeriod);
//                    information.setFlow(flow);
//                    information.setUsedFlow(usedFlow);
//                    information.setFlowUseRate(flowUseRate);
//                    information.setOrderUsedFlow(orderUsedFlow);
//                    information.setOrderDate(orderDate);
//                    information.setActiveDate(activeDate);
//                    information.setExpireDate(expireDate);
//                    information.setIsOrderRefuelingPackage(isOrderRefuelingPackage);
//                    return information;
//                }
//
//            } else {
//                DeviceRealTimeInformation information = new DeviceRealTimeInformation();
//                information.setRetCode(retCode);
//                information.setResultInfo(resultInfo);
//                return information;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        return null;
//    }
//
//    /****
//     * 请求所有订单是为了算出剩余时间
//     * 现在专用于客户大阳
//     * @param partnerCode
//     * @param deviceId
//     * @param orderType
//     * @param orderId
//     * @param orderStatus
//     * @param secret
//     * @return
//     */
//
//    public DeviceRealTimeInformation queryAllOrder(String partnerCode, String deviceId, String orderType, String orderId, String orderStatus, String secret) {
//
//        try {
//            QueryOrderRequestBody body = new QueryOrderRequestBody();
//
//            if (StringUtils.isNotBlank(deviceId)) {
//                body.setDeviceId(deviceId);
//            }
//            if (StringUtils.isNotBlank(orderId)) {
//                body.setOrderId(orderId);
//            }
//            if (StringUtils.isNotBlank(orderType)) {
//                body.setOrderType(orderType);
//            }
//            if (StringUtils.isNotBlank(orderStatus)) {
//                body.setOrderStatus(orderStatus);
//            }
//            // 请求参数拼接
//            QueryOrderRequest request = new QueryOrderRequest();
//            TurntoInterfaceUtils utils = new TurntoInterfaceUtils();
//            RequestHeader header = utils.getRequestHeader(Constant.cmd_queryOrder, partnerCode);
//            request.setHeader(header);
//            request.setBody(body);
//            String sign = utils.getSign(header, body, body.getClass(), secret);
//            request.setSign(sign);
//
//            // 将参数转换成XML格式
//            String sRequest = new JaxbUtil(QueryOrderRequest.class).toXml(request, "utf-8");
//
//            //logger.info("请求xml报文：" + sRequest);
//
//            // 发送post请求，并接收返回结果
//
//            String result = HttpClientTool.sendHttpPost(Constant.BASE_URL, sRequest);
//
//            //logger.info("响应报文：" + result);
//
//            QueryOrderResponse responseObj = new JaxbUtil(QueryOrderResponse.class).fromXml(result, "utf-8");
//
//            String retCode = responseObj.getHeader().getResultCode();
//            String resultInfo = responseObj.getHeader().getResultInfo();
//
//            if (true == com.inter.entity.pojo.Constant.RET_CODE_0000.equalsIgnoreCase(retCode)) {
//
//                //成功，拿到回传的结果回传前端去,只有body才包括所有packageOrder
//                List<PackageOrder> packageOrderList = new ArrayList<PackageOrder>();
//                packageOrderList = responseObj.getBody().getPackageOrder();
//
//                /***
//                 *  下面是计算每一种订单状态的订单数
//                 */
//                int count_noenabled = 0;
//                for (int i = 0; i < packageOrderList.size(); i++) {
//                    PackageOrder packageOrder = packageOrderList.get(i);
//                    //计算list中有几个未启用的订单
//                    if (packageOrder != null && packageOrder.getOrderStatus().equals("1")) {
//                        count_noenabled = count_noenabled + 1;
//                    }
//                }
//
//                /***
//                 * 下面是计算所有订单的天数
//                 */
//
//                String num = "";
//                //未启用的订单天数
//                int day_weiyong = 0;
//                //正在使用的订单还剩余的天数
//                int remaining_Date = 0;
//
//                for (PackageOrder p : packageOrderList) {
//
//                    //开始使用(算剩余时间)
//                    if (p.getOrderStatus().equals("2")) {
//
//                        SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyyMMdd");
//
//                        //预计结束时间
//
//                        Date expireDate = simpleFormat.parse(p.getExpireDate());
//
//                        //今天的日期
//
//                        Date now = simpleFormat.parse(simpleFormat.format(new Date()));
//
//                        long expire = expireDate.getTime();
//                        long to = now.getTime();
//                        remaining_Date = (int) ((expire - to) / (1000 * 60 * 60 * 24));
//
//                        //logger.info("开始使用的剩余时间：" + remaining_Date);
//
//                    } else if (p.getOrderStatus().equals("1")) {
//
//                        if ("0".equals(p.getPackageType()) || "1".equals(p.getPackageType())) {
//                            num = Integer.parseInt(p.getOrderPeriod()) + "";
//                            day_weiyong = Integer.parseInt(num) * count_noenabled;
//                        } else if ("2".equals(p.getPackageType())) {
//                            num = Integer.parseInt(p.getOrderPeriod()) + "";
//                            day_weiyong = Integer.parseInt(num) * count_noenabled * 30;
//                        } else if ("3".equals(p.getPackageType())) {
//                            num = Integer.parseInt(p.getOrderPeriod()) + "";
//                            day_weiyong = Integer.parseInt(num) * count_noenabled * 30 * 3;
//                        } else if ("4".equals(p.getPackageType())) {
//                            num = Integer.parseInt(p.getOrderPeriod()) + "";
//                            day_weiyong = Integer.parseInt(num) * count_noenabled * 30 * 6;
//                        } else if ("5".equals(p.getPackageType())) {
//                            num = Integer.parseInt(p.getOrderPeriod()) + "";
//                            day_weiyong = Integer.parseInt(num) * count_noenabled * 30 * 12;
//                        }
//
//                        //logger.info("未启用的剩余时间：" + day_weiyong);
//                    }
//                }
//
//                //剩余天数
//
//                String remainingDate = String.valueOf(day_weiyong + remaining_Date);
//                logger.info("获取到了：" + responseObj.getBody().getPackageOrderNum() + "个套餐;使用剩余：" + remaining_Date + ";未启用剩余：" + day_weiyong + ";实际共剩余：" + remainingDate);
//                DeviceRealTimeInformation information = new DeviceRealTimeInformation();
//                information.setRemainingDate(remainingDate);
//                information.setRetCode(retCode);
//                information.setResultInfo(resultInfo);
//                return information;
//
//            } else {
//                DeviceRealTimeInformation information = new DeviceRealTimeInformation();
//                information.setRetCode(retCode);
//                information.setResultInfo(resultInfo);
//                return information;
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//
//        }
//        return null;
//
//
//    }
//
//
//
//}
//
